package com.pureut.system.mapper;


import com.pureut.system.domain.dto.MaterialBomHalfDetailDto;
import com.pureut.system.domain.dto.MaterialBomHalfDto;
import com.pureut.system.domain.dto.MaterialBomHalfListDto;
import com.pureut.system.domain.dto.BomDetailListDto;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author: CM
 * @date: 2023/6/14    14:12
 */
@Mapper
public interface MaterialBomHalfDetailMapper {

    /**
     * 查询Bom明细信息
     * @param bomId
     * @return
     */
    MaterialBomHalfDetailDto getDetail(Long bomId);


    int insertMaterialBomDetail(MaterialBomHalfDto materialBomHalfDto);

    /**
     * 通过父级id查出下层的物料信息
     * @param bomId
     * @return
     */
    List<MaterialBomHalfDetailDto> getByParentId(Long bomId);

    /**
     * 根据父级Bomid和Bom编码查出BOM明细信息
     * @param bomParentId
     * @param code
     * @return
     */
    MaterialBomHalfDetailDto getByParentIdAndCode(@Param("bomParentId") Long bomParentId,@Param("code") String code);

    /**
     * 根据Bom的id查出半成品信息
     * @param bomId
     * @return
     */
    List<MaterialBomHalfListDto> getByParentIdView(long bomId);

    /**
     * 根据Bomid查出Bom的明细
     * @param bomId
     * @return
     */
    int removeBomDetail(long bomId);

    /**
     * 通过Bom编码查出bom明细
     * @param bomCode
     * @return
     */
    List<MaterialBomHalfDetailDto> selectBomCode(String bomCode);

    /**
     * 通过BOMid查出Bom的明细列表
     * @param bomId
     * @return
     */
    List<MaterialBomHalfDetailDto> selectlBomDetailList(long bomId);

    /**
     * 通过物料编码查询出Bom二级
     * @param materialCode
     * @return
     */
    MaterialBomHalfDetailDto getMaterialCode(String materialCode);

    /**
     * 脱脂查询使用
     * @param bomId
     * @return
     */
    List<BomDetailListDto> selectBomDetailListTZ(long bomId);

    /**
     * 根据Bom编码，bom明细的父级id，修改占比开关，占比
     * @param bomCode
     * @param bomProportion
     * @param bomProportionStatus
     * @param bomId
     * @return
     */
    boolean updateProportion(@Param("bomCode") String bomCode,@Param("bomProportion") String bomProportion,@Param("bomProportionStatus") int bomProportionStatus,@Param("bomId") long bomId);

    /***
     * 查询Bom明细表中父级id为BomId并且bom编码不为null的明细列表
     * @param bomId
     * @return
     */
    List<MaterialBomHalfDetailDto> getMaterialCodeAndBomcodeNotNull(long bomId);

    /**
     * 通过Bom编码查出在bom明细中是否存在这个数据
     * @param bomId
     * @return
     */
    List<MaterialBomHalfDetailDto> getBomCode(long bomId);
}
